One-time programmable (OTP) memories continue to be used for a variety of applications, including but not limited to permanent storage of programs or bootable code, device identification, or marking particular data with an unchangeable characteristic, such as being read-only or accessible only in response to a user having particular permissions. OTP memory is often programmed by manufacturers and typically only after being implemented in a device. Some OTP memories rely on fuses to ensure that bits of the OTP memories cannot be changed. By “blowing” a fuse (or “unblowing” an antifuse), for example, a bit is permanently transitioned from an unwritten state to a written state.
An example of conventional fuses used for OTP memories are polyfuses. Polyfuses are programmable memory elements that may have a blown state or an unblown state. The unblown state may be characterized by a low resistance value, and the blown state may be characterized by a high resistance value. While polyfuses initially are in an unblown state, providing a high current to a polyfuse may cause a polyfuse to transition from an unblown state to a blown state, thereby increasing the resistance of the polyfuse. In some instances, providing the high current may vaporize a portion of the fuse, such as a metal silicide (e.g., WSi or CoSi2) layer.
Whether a polyfuse in blown or unblown may be determined using the resistance of the fuse. For example, unblown polyfuses may have a resistance between 110 ohms and 220 ohms, and have an average resistance of 165 ohms. Blown polyfuses, on the other hand typically have a resistance of at least 880 ohms. By differentiating between these respective resistances, the fuse state of a fuse may be determined.
Because polyfuses may not transition to an unblown state from a blown state, polyfuses may be used as one-time programmable memory elements. A blown state may, for example, correspond to a logical value of 0 and an unblown state may correspond to a logical value of 1, or a blown state may correspond to a logical value of 1 and an unblown state may correspond to a logical value of 0.
While use of OTP memories, generally, is well known, conventional approaches are not without their respective faults. Current programming processes often require long burning times, and OTP memory arrays can require large amounts of physical space in a device. Moreover, in many cases, OTP memories may require that particular fuse states of fuses correspond to certain logical values, limiting the manner in which OTP memory may be written. With respect to polyfuses, the relatively small resistance margin between unblown and blown states may cause difficulty when attempting to reliably differentiate between blown and unblown fuses. Some approaches have attempted to compensate for this problem, but often have impractical power consumption.